﻿namespace HlElock.Api.Models
{
    /// <summary>
    /// 表示用于修改 PMS 系统中房间信息的请求参数。
    /// </summary>
    public class EditRoomRequest
    {
        /// <summary>
        /// 获取或设置房间类型（例如 "大床房"）。
        /// 对应 API 中的 'fltype' 字段。
        /// </summary>
        public string FlType { get; set; }

        /// <summary>
        /// 获取或设置修改的原因或备注。
        /// 对应 API 中的 'reason' 字段。
        /// </summary>
        public string Reason { get; set; }

        /// <summary>
        /// 获取或设置修改操作的日期。
        /// 此字段在修改上下文中的具体用途尚不明确，
        /// 但根据 curl 命令，它是调用接口所必需的。
        /// 对应 API 中的 'tjdate' 字段。
        /// </summary>
        public string TjDate { get; set; }

        /// <summary>
        /// 获取或设置房间的分机。
        /// 对应 API 中的 'extnum' 字段。
        /// </summary>
        public string ExtNum { get; set; }

        /// <summary>
        /// 获取或设置执行修改操作的操作员 ID。
        /// 根据 curl 命令，此字段可以为空。
        /// 对应 API 中的 'operid' 字段。
        /// </summary>
        public string OperId { get; set; }

        /// <summary>
        /// 获取或设置房间所在的楼层（例如 "A"）。
        /// 对应 API 中的 'floor' 字段。
        /// </summary>
        public string Floor { get; set; }

        /// <summary>
        /// 获取或设置房间所在的楼栋标识。
        /// 对应 API 中的 'build' 字段。
        /// </summary>
        public string Build { get; set; }

        /// <summary>
        /// 获取或设置房间是否有窗户。
        /// 通常 "1" 表示有，"0" 表示无。
        /// 对应 API 中的 'window' 字段。
        /// </summary>
        public string Window { get; set; }

        /// <summary>
        /// 获取或设置与房间关联的项目代码。
        /// 对应 API 中的 'prjcode' 字段。
        /// </summary>
        public string PrjCode { get; set; }

        /// <summary>
        /// 获取或设置房间的唯一标识符。
        /// 对应 API 中的 'roomid' 字段。
        /// </summary>
        public string RoomId { get; set; }

        /// <summary>
        /// 获取或设置房间的标签。
        /// 具体含义需根据业务上下文确定。
        /// 对应 API 中的 'tag' 字段。
        /// </summary>
        public string Tag { get; set; }

        /// <summary>
        /// 获取或设置房间的朝向（例如 "朝东"）。
        /// 对应 API 中的 'face' 字段。
        /// </summary>
        public string Face { get; set; }

        /// <summary>
        /// 获取或设置用于生成房间号的前缀 ID。
        /// 对应 API 中的 'preid' 字段。
        /// </summary>
        public string PreId { get; set; }

        /// <summary>
        /// 获取或设置用于生成房间号的后缀 ID。
        /// 对应 API 中的 'sufid' 字段。
        /// </summary>
        public string SufId { get; set; }

        /// <summary>
        /// 初始化 <see cref="EditRoomRequest"/> 类的新实例。
        /// </summary>
        public EditRoomRequest() { }

        /// <summary>
        /// 使用指定的值初始化 <see cref="EditRoomRequest"/> 类的新实例。
        /// </summary>
        /// <param name="flType">房间类型。</param>
        /// <param name="reason">修改原因或备注。</param>
        /// <param name="tjDate">修改日期。</param>
        /// <param name="extNum">分机。</param>
        /// <param name="operId">操作员 ID（可以为空）。</param>
        /// <param name="floor">楼层位置。</param>
        /// <param name="build">楼栋标识。</param>
        /// <param name="window">是否有窗户。</param>
        /// <param name="prjCode">项目代码。</param>
        /// <param name="roomId">房间的唯一标识符。</param>
        /// <param name="face">房间朝向。</param>
        /// <param name="preId">前缀 ID。</param>
        /// <param name="sufId">后缀 ID。</param>
        public EditRoomRequest(string flType, string reason, string tjDate, string extNum, string operId,
                               string floor, string build, string window, string prjCode,
                               string roomId, string face, string preId, string sufid)
        {
            FlType = flType;
            Reason = reason;
            TjDate = tjDate;
            ExtNum = extNum;
            OperId = operId;
            Floor = floor;
            Build = build;
            Window = window;
            PrjCode = prjCode;
            RoomId = roomId;
            Face = face;
            PreId = preId;
            SufId = sufid;
        }
    }
}
